The Ken Thompson Hack
Unixのオリジナルの開発者のKenneth Lane Thompsonが、Unixのコンパイラに情報を埋め込むことで、任意のUnixにloginできるようにしたもの
チューリング章を受賞した時に暴露した
登場人物は2つある
コンパイラ
Unix (ターゲット)
コンパイラ側にハックを施すことで、Unixのlogin処理を改変している
コンパイラのコード生成部分をハックする
特定の処理部分をコンパイルする時に、
予め用意したアセンブリを吐き出すようにする
セルフホストする際の根幹のバイナリにバックドアが仕込まれている
ハック済みCコンパイラバイナリA
正常なCコンパイラコード B.c
AでB.cをコンパイルして、Bを生成
このBの結果も仕込まれている
正常なCコンパイラコードC.c
BでC.cをコンパイルして、Cを生成
このCの結果にも仕込まれている
...
Quineが出てきたところから理解できなくなったmrsekut.icon
https://0x19f.hatenablog.com/entry/2018/08/20/212514
そしてこれをコンパイルして出来たアセンブリファイル (gen_func_def_very_evil.s) をクワインになるように書き換えます。 gen_func_def という関数が出てきたら自身と全く同じ文字列を出力するというアセンブリに書き換えたものが gen_func_def_very_evil_quine.s です。
この辺がわからない
「自身」というのは何を指している?
Reflections on Trusting Trust
https://users.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf
3ページ
自作Cコンパイラで Ken Thompson のログインハックを再現してみた - 0x19f (Shinya Kato) の日報
Thompson Hackを再現している記事
解説が具体的でわかりやすい
The Ken Thompson Hack
コンパイラに仕込まれた細工とシステムのセキュリティの話|Rui Ueyama|note
信頼を信頼することについての考察 ケン・トンプソン #acm - Qiita